package ru.fivestarter.view.authorisation;


import javax.annotation.PostConstruct;
import javax.faces.context.FacesContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * 
 * Используется для входа и выхода из системы
 * @author fivestarter
 * @version 1.0
 *
 */
public class Login {
	/***/
	private String login;
	/** Хранит значение надписи на кнопке вход или выход и в зависимости от этого и работает*/
	private String loginLabel="Войти";
	/**  Для вытягивания данных из запроса: принципала, адреса предидущей страницы и т.п.*/
	private HttpServletRequest request;
	public Login() {
		// TODO Auto-generated constructor stub
	}
	public String getLogin() {
		return login;
	}
	public void setLogin(String login) {
		this.login = login;
	}
	
	public String getLoginLabel() {
		return loginLabel;
	}
	public void setLoginLabel(String loginLabel) {
		this.loginLabel = loginLabel;
	}
	public String logInLogOut(){
		if (request.getUserPrincipal()==null){
			return "login";
		}
		else{
			//попробуем в сессионном бине обнулить объект со свойствами, чтоб не светились. в объекте лежит календарь
			
			this.login=null;
			this.loginLabel="Войти";
		    try {
		        request.logout();
		      } catch (ServletException e) {
		     //   log.log(Level.SEVERE, "Failed to logout user!", e);
		        
		      }
		       //reload это все для перезагрузки страницы
		    String url=FacesContext.getCurrentInstance().getViewRoot().getViewId();
		    
		    try {
				HttpServletResponse response=(HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse();
				response.sendRedirect(request.getContextPath()+url);  //context path потому, что url его не содержит
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}

			//reload
		}
		return null;
		
	}
	@PostConstruct
	public void init(){
		FacesContext context = FacesContext.getCurrentInstance();
	    request = (HttpServletRequest)context.getExternalContext().getRequest();
	    if(request.getUserPrincipal()!=null){
	    	setLogin(request.getUserPrincipal().getName());
	    	setLoginLabel("Выйти");
	    }
	    else{
	    	setLoginLabel("Войти");
	    }
	    
	    
	    
	}
	
}
